// Can template arguments have sub-parts?
// YES!  That's cool.


#include <vector>
#include <iostream>

template <class Container>
void write(Container& c) {
    for (typename Container::iterator i = c.begin(); i != c.end(); ++i)
        std::cout << *i << " ";
    std::cout << "\n";
}

int main() {
    std::vector<int> v;
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);

    write(v);
}
